#ifndef SPA_H
#define SPA_H

#include <string>

#include "Parser.h"
#include "DesignExtractor.h"

#include "QueryProcessor.h"
#include "Pattern.h"
class SPA
{
	private:
		// UI Elements
		bool _loaded; // file loaded
		bool _parsed; // file parsed
		std::string _contents; // contents of loaded file

		void PQLPrompt();
		void FilePrompt();

		// Front-End
		Parser _parser;
		DesignExtractor _design_extractor;

		// Query Processor
		QueryProcessor _query_processor;

	public:
		SPA();
		~SPA();

		void Start();
		bool ParseFile();
		void ExtractDesign();
		bool CompareGeneratedCode();
		bool LoadFile( std::string path );
		void EvaluateQuery( std::string query, std::list<std::string>& results );
};

#endif